home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / comm / tcp / samba_2.0.6.lha / source / amiga.diffs next >
Encoding:
Text File  |  1999-12-03  |  16.4 KB  |  673 lines

  1. *** include/includes.h    Wed Nov 10 21:36:00 1999
  2. --- /new/include/includes.h    Tue Nov 16 19:32:45 1999
  3. ***************
  4. *** 21,26 ****
  5. --- 21,36 ----
  6.      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  7.   */
  8.   
  9. + #ifdef AMIGA
  10. + /* This type definition clashes with one
  11. +  * used in the Samba code, which is why
  12. +  * we hide it.
  13. +  */
  14. + #define BOOL __BOOL
  15. + #include <exec/types.h>
  16. + #undef BOOL
  17. + #endif /* AMIGA */
  18.   #ifndef NO_CONFIG_H /* for some tests */
  19.   #include "config.h"
  20.   #endif
  21. ***************
  22. *** 847,852 ****
  23. --- 857,873 ----
  24.   
  25.   /* yuck, I'd like a better way of doing this */
  26.   #define DIRP_SIZE (256 + 32)
  27. + #ifdef AMIGA
  28. + /* Remap a couple of library routines. */
  29. + #include "amiga.h"
  30. + /* These clash with local definitions in "smbd/ipc.c",
  31. +  * which is why we undefine them.
  32. +  */
  33. + #undef ACCESS_READ
  34. + #undef ACCESS_WRITE
  35. + #endif /* AMIGA */
  36.   
  37.   /*
  38.    * glibc on linux doesn't seem to have MSG_WAITALL
  39. *** lib/smbrun.c    Tue Jul 20 20:25:09 1999
  40. --- /new/lib/smbrun.c    Tue Nov 16 19:32:45 1999
  41. ***************
  42. *** 92,97 ****
  43. --- 92,100 ----
  44.       set_inherited_process_capability(KERNEL_OPLOCK_CAPABILITY, False);
  45.   
  46.   #ifndef HAVE_EXECL
  47. + #ifdef AMIGA
  48. +     return(amiga_smbrun(cmd,outfile,shared));
  49. + #else
  50.       int ret;
  51.       pstring syscmd;  
  52.       char *path = lp_smbrun();
  53. ***************
  54. *** 113,118 ****
  55. --- 116,122 ----
  56.       ret = system(syscmd);
  57.       DEBUG(5,("gave %d\n",ret));
  58.       return(ret);
  59. + #endif /* AMIGA */
  60.   #else
  61.       /* in this newer method we will exec /bin/sh with the correct
  62.          arguments, after first setting stdout to point at the file */
  63. *** lib/snprintf.c    Wed Oct 13 00:26:49 1999
  64. --- /new/lib/snprintf.c    Tue Nov 16 19:32:48 1999
  65. ***************
  66. *** 49,54 ****
  67. --- 49,59 ----
  68.    *    fixed handling of %.0f
  69.    *    added test for HAVE_LONG_DOUBLE
  70.    *
  71. +  *  Olaf Barthel <olsen@sourcery.han.de> 15-Oct-99
  72. +  *    Implemented the missing 'f' and 'g' floating point output
  73. +  *    formats; also fixed handling of floating point numbers
  74. +  *    like "0.01" which would always come out as "0.1".
  75. +  *
  76.    **************************************************************/
  77.   
  78.   #include "config.h"
  79. ***************
  80. *** 59,64 ****
  81. --- 64,73 ----
  82.   
  83.   #if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
  84.   
  85. + #ifdef AMIGA
  86. + #include <math.h>
  87. + #endif /* AMIGA */
  88.   /* Define this as a fall through, HAVE_STDARG_H is probably already set */
  89.   
  90.   #define HAVE_VARARGS_H
  91. ***************
  92. *** 107,113 ****
  93.   static void fmtint (char *buffer, size_t *currlen, size_t maxlen,
  94.               long value, int base, int min, int max, int flags);
  95.   static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
  96. !            LDOUBLE fvalue, int min, int max, int flags);
  97.   static void dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c );
  98.   
  99.   /*
  100. --- 116,122 ----
  101.   static void fmtint (char *buffer, size_t *currlen, size_t maxlen,
  102.               long value, int base, int min, int max, int flags);
  103.   static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
  104. !            LDOUBLE fvalue, int min, int max, int flags, char ch);
  105.   static void dopr_outch (char *buffer, size_t *currlen, size_t maxlen, char c );
  106.   
  107.   /*
  108. ***************
  109. *** 326,332 ****
  110.       else
  111.         fvalue = va_arg (args, double);
  112.       /* um, floating point? */
  113. !     fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);
  114.       break;
  115.         case 'E':
  116.       flags |= DP_F_UP;
  117. --- 335,341 ----
  118.       else
  119.         fvalue = va_arg (args, double);
  120.       /* um, floating point? */
  121. !     fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags, ch);
  122.       break;
  123.         case 'E':
  124.       flags |= DP_F_UP;
  125. ***************
  126. *** 335,340 ****
  127. --- 344,351 ----
  128.         fvalue = va_arg (args, LDOUBLE);
  129.       else
  130.         fvalue = va_arg (args, double);
  131. +     /* um, floating point? */
  132. +     fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags, ch);
  133.       break;
  134.         case 'G':
  135.       flags |= DP_F_UP;
  136. ***************
  137. *** 343,348 ****
  138. --- 354,361 ----
  139.         fvalue = va_arg (args, LDOUBLE);
  140.       else
  141.         fvalue = va_arg (args, double);
  142. +     /* um, floating point? */
  143. +     fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags, ch);
  144.       break;
  145.         case 'c':
  146.       dopr_outch (buffer, &currlen, maxlen, va_arg (args, int));
  147. ***************
  148. *** 577,584 ****
  149.   }
  150.   
  151.   static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
  152. !            LDOUBLE fvalue, int min, int max, int flags)
  153.   {
  154.     int signvalue = 0;
  155.     LDOUBLE ufvalue;
  156.   #ifndef HAVE_FCVT
  157. --- 590,604 ----
  158.   }
  159.   
  160.   static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
  161. !            LDOUBLE fvalue, int min, int max, int flags, char ch)
  162.   {
  163. +   enum /* olsen: output formats to be used below. */
  164. +   {
  165. +     FORMAT_f,
  166. +     FORMAT_g,
  167. +     FORMAT_e
  168. +   };
  169.     int signvalue = 0;
  170.     LDOUBLE ufvalue;
  171.   #ifndef HAVE_FCVT
  172. ***************
  173. *** 593,599 ****
  174. --- 613,621 ----
  175.   # ifdef HAVE_FCVTL
  176.     extern char *fcvtl(long double value, int ndigit, int *decpt, int *sign);
  177.   # else
  178. + #ifndef AMIGA
  179.     extern char *fcvt(double value, int ndigit, int *decpt, int *sign);
  180. + #endif /* AMIGA */
  181.   # endif
  182.   #endif
  183.     int iplace = 0;
  184. ***************
  185. *** 603,609 ****
  186.     int caps = 0;
  187.     long intpart;
  188.     long fracpart;
  189. !   
  190.     /* 
  191.      * AIX manpage says the default is 0, but Solaris says the default
  192.      * is 6, and sprintf on AIX defaults to 6
  193. --- 625,635 ----
  194.     int caps = 0;
  195.     long intpart;
  196.     long fracpart;
  197. !   int exponent;
  198. !   int exponentLen;
  199. !   int outputFmt;
  200. !   int decimalPointLen;
  201.     /* 
  202.      * AIX manpage says the default is 0, but Solaris says the default
  203.      * is 6, and sprintf on AIX defaults to 6
  204. ***************
  205. *** 622,627 ****
  206. --- 648,696 ----
  207.         if (flags & DP_F_SPACE)
  208.       signvalue = ' ';
  209.   
  210. +   /* olsen: determine the output format. */
  211. +   if(ch == 'g' || ch == 'G')
  212. +     outputFmt = FORMAT_g;
  213. +   else if (ch == 'e' || ch == 'E')
  214. +     outputFmt = FORMAT_e;
  215. +   else
  216. +     outputFmt = FORMAT_f;
  217. +   /* olsen: calculate the exponent */
  218. +   exponent = 0;
  219. +   if(ufvalue > 0.0 && outputFmt != FORMAT_f)
  220. +   {
  221. +     LDOUBLE value = ufvalue;
  222. +     /* Make sure that the integer part
  223. +      * comes out as a single digit.
  224. +      */
  225. +     if(value < 1.0)
  226. +     {
  227. +       do
  228. +       {
  229. +         value *= 10.0;
  230. +         exponent--;
  231. +       }
  232. +       while(value < 1.0);
  233. +     }
  234. +     else if(value > 10.0)
  235. +     {
  236. +       do
  237. +       {
  238. +         value /= 10.0;
  239. +         exponent++;
  240. +       }
  241. +       while(value > 10.0);
  242. +     }
  243. +     /* Don't change the base unless we are to output
  244. +      * the number in scientific format.
  245. +      */
  246. +     if((outputFmt == FORMAT_e) || (outputFmt == FORMAT_g && exponent < -4))
  247. +       ufvalue = value;
  248. +   }
  249.   #if 0
  250.     if (flags & DP_F_UP) caps = 1; /* Should characters be upper case? */
  251.   #endif
  252. ***************
  253. *** 659,674 ****
  254.       intpart = (intpart / 10);
  255.     } while(intpart && (iplace < 20));
  256.     if (iplace == 20) iplace--;
  257. !   iconvert[iplace] = 0;
  258.   
  259.     /* Convert fractional part */
  260.     do {
  261.       fconvert[fplace++] =
  262.         (caps? "0123456789ABCDEF":"0123456789abcdef")[fracpart % 10];
  263.       fracpart = (fracpart / 10);
  264. !   } while(fracpart && (fplace < 20));
  265.     if (fplace == 20) fplace--;
  266. !   fconvert[fplace] = 0;
  267.   #else  /* use fcvt() */
  268.     if (max > 310)
  269.       max = 310;
  270. --- 728,752 ----
  271.       intpart = (intpart / 10);
  272.     } while(intpart && (iplace < 20));
  273.     if (iplace == 20) iplace--;
  274. !   iconvert[iplace] = '\0';
  275.   
  276.     /* Convert fractional part */
  277.     do {
  278.       fconvert[fplace++] =
  279.         (caps? "0123456789ABCDEF":"0123456789abcdef")[fracpart % 10];
  280.       fracpart = (fracpart / 10);
  281. !   } while(fracpart != 0 && (fplace < 20));
  282. !   /* olsen: we need to make up for numbers like 0.01
  283. !    *        which would come out as "0.1" unless
  284. !    *        we add a few padding zeroes.
  285. !    */
  286. !   while(fplace < 20 && fplace < max)
  287. !     fconvert[fplace++] = '0';
  288.     if (fplace == 20) fplace--;
  289. !   fconvert[fplace] = '\0';
  290.   #else  /* use fcvt() */
  291.     if (max > 310)
  292.       max = 310;
  293. ***************
  294. *** 716,723 ****
  295.       }
  296.   #endif /* fcvt */
  297.     
  298.     /* -1 for decimal point, another -1 if we are printing a sign */
  299. !   padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0); 
  300.     zpadlen = max - fplace;
  301.     if (zpadlen < 0)
  302.       zpadlen = 0;
  303. --- 794,863 ----
  304.       }
  305.   #endif /* fcvt */
  306.     
  307. +   /* olsen: eliminate trailing zeroes. */
  308. +   decimalPointLen = (max > 0) ? 1 : 0;
  309. +   exponentLen = 0;
  310. +   if(outputFmt == FORMAT_g)
  311. +   {
  312. +     int i,numTrailingZeroes;
  313. +     /* Count the number of trailing zeroes. */
  314. +     numTrailingZeroes = 0;
  315. +     for(i = 0 ; i < fplace ; i++)
  316. +     {
  317. +       if(fconvert[i] == '0')
  318. +         numTrailingZeroes++;
  319. +       else
  320. +         break;
  321. +     }
  322. +     /* If there are any, remove them. */
  323. +     if(numTrailingZeroes > 0)
  324. +     {
  325. +       /* Remove the zeroes, if necessary.
  326. +        * Otherwise, just forget that we
  327. +        * had any digits in the fractional
  328. +        * part.
  329. +        */
  330. +       if(numTrailingZeroes != fplace)
  331. +       {
  332. +         for(i = 0 ; i < fplace-numTrailingZeroes ; i++)
  333. +           fconvert[i] = fconvert[numTrailingZeroes+i];
  334. +       }
  335. +       fplace -= numTrailingZeroes;
  336. +       fconvert[fplace] = '\0';
  337. +       /* Don't print the decimal point if
  338. +        * there is nothing to follow it.
  339. +        */
  340. +       if(fplace == 0)
  341. +         decimalPointLen = 0;
  342. +     }
  343. +     /* Switch to scientific output format
  344. +      * if the exponent is too small.
  345. +      */
  346. +     if(exponent < -4)
  347. +     {
  348. +       /* Two digits for the "e+" and
  349. +        * at least two digits for the number
  350. +        * to follow the sign.
  351. +        */
  352. +       exponentLen = (int)log10((LDOUBLE)exponent) + 2;
  353. +       if(exponentLen < 4)
  354. +         exponentLen = 4;
  355. +     }
  356. +   }
  357. +   else if(outputFmt == FORMAT_e)
  358. +   {
  359. +     exponentLen = (int)log10((LDOUBLE)exponent) + 2;
  360. +     if(exponentLen < 4)
  361. +       exponentLen = 4;
  362. +   }
  363.     /* -1 for decimal point, another -1 if we are printing a sign */
  364. !   padlen = min - iplace - max - decimalPointLen - ((signvalue) ? 1 : 0); 
  365.     zpadlen = max - fplace;
  366.     if (zpadlen < 0)
  367.       zpadlen = 0;
  368. ***************
  369. *** 726,731 ****
  370. --- 866,875 ----
  371.     if (flags & DP_F_MINUS) 
  372.       padlen = -padlen; /* Left Justifty */
  373.   
  374. +   /* olsen: eliminate trailing zeroes. */
  375. +   if(outputFmt == FORMAT_g)
  376. +     zpadlen = 0;
  377.     if ((flags & DP_F_ZERO) && (padlen > 0)) 
  378.     {
  379.       if (signvalue) 
  380. ***************
  381. *** 760,766 ****
  382.      * Decimal point.  This should probably use locale to find the correct
  383.      * char to print out.
  384.      */
  385. !   if (max > 0) {
  386.         dopr_outch (buffer, currlen, maxlen, '.');
  387.   
  388.         while (fplace > 0) 
  389. --- 904,910 ----
  390.      * Decimal point.  This should probably use locale to find the correct
  391.      * char to print out.
  392.      */
  393. !   if (max > 0 && decimalPointLen > 0) {
  394.         dopr_outch (buffer, currlen, maxlen, '.');
  395.   
  396.         while (fplace > 0) 
  397. ***************
  398. *** 773,778 ****
  399. --- 917,951 ----
  400.       --zpadlen;
  401.     }
  402.   
  403. +   /* olsen: output the exponent */
  404. +   if(exponentLen > 0)
  405. +   {
  406. +     char expChars[10];
  407. +     int numExpChars;
  408. +     int i;
  409. +     dopr_outch (buffer, currlen, maxlen, caps?'E':'e');
  410. +     if(exponent < 0)
  411. +     {
  412. +       dopr_outch (buffer, currlen, maxlen, '-');
  413. +       exponent = (-exponent);
  414. +     }
  415. +     else
  416. +     {
  417. +       dopr_outch (buffer, currlen, maxlen, '+');
  418. +     }
  419. +     numExpChars = 0;
  420. +     for(i = 0 ; i < exponentLen-2 && i < sizeof(expChars)-1 ; i++)
  421. +     {
  422. +       expChars[numExpChars++] = '0' + (exponent % 10);
  423. +       exponent /= 10;
  424. +     }
  425. +     while(numExpChars > 0)
  426. +       dopr_outch (buffer, currlen, maxlen, expChars[--numExpChars]);
  427. +   }
  428.     while (padlen < 0) 
  429.     {
  430.       dopr_outch (buffer, currlen, maxlen, ' ');
  431. ***************
  432. *** 848,857 ****
  433.       "%3.2f",
  434.       "%.0f",
  435.       "%.1f",
  436.       NULL
  437.     };
  438.     double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996, 
  439. !     0.9996, 1.996, 4.136, 6442452944.1234, 0};
  440.     char *int_fmt[] = {
  441.       "%-1.5d",
  442.       "%1.5d",
  443. --- 1021,1059 ----
  444.       "%3.2f",
  445.       "%.0f",
  446.       "%.1f",
  447. +     "%-1.5g",
  448. +     "%1.5g",
  449. +     "%123.9g",
  450. +     "%10.5g",
  451. +     "% 10.5g",
  452. +     "%+22.9g",
  453. +     "%+4.9g",
  454. +     "%01.3g",
  455. +     "%4g",
  456. +     "%3.1g",
  457. +     "%3.2g",
  458. +     "%.0g",
  459. +     "%.1g",
  460. +     "%-1.5e",
  461. +     "%1.5e",
  462. +     "%123.9e",
  463. +     "%10.5e",
  464. +     "% 10.5e",
  465. +     "%+22.9e",
  466. +     "%+4.9e",
  467. +     "%01.3e",
  468. +     "%4e",
  469. +     "%3.1e",
  470. +     "%3.2e",
  471. +     "%.0e",
  472. +     "%.1e",
  473.       NULL
  474.     };
  475.     double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996, 
  476. !     0.9996, 1.996, 4.136, 644245294.1234, 0};
  477.     char *int_fmt[] = {
  478.       "%-1.5d",
  479.       "%1.5d",
  480. ***************
  481. *** 900,904 ****
  482.       }
  483.     printf ("%d tests failed out of %d.\n", fail, num);
  484.   }
  485. ! #endif /* SNPRINTF_TEST */
  486. --- 1102,1105 ----
  487.       }
  488.     printf ("%d tests failed out of %d.\n", fail, num);
  489.   }
  490. ! #endif /* TEST_SNPRINTF */
  491. *** lib/util.c    Wed Nov 10 21:36:02 1999
  492. --- /new/lib/util.c    Tue Nov 16 19:32:49 1999
  493. ***************
  494. *** 1582,1587 ****
  495. --- 1582,1594 ----
  496.   ****************************************************************************/
  497.   void become_daemon(void)
  498.   {
  499. +     #ifdef AMIGA
  500. +     {
  501. +         DEBUG(2,("Warning: become_daemon() not done.\n"));
  502. +         return;
  503. +     }
  504. +     #endif /* AMIGA */
  505.       if (fork()) {
  506.           _exit(0);
  507.       }
  508. *** lib/interface.c    Wed Oct 13 00:26:48 1999
  509. --- /new/lib/interface.c    Sat Nov 20 16:01:23 1999
  510. ***************
  511. *** 234,243 ****
  512.   
  513.       n = get_interfaces(ifaces, MAX_INTERFACES);
  514.   
  515. !     if (n != total_probed ||
  516. !         memcmp(ifaces, probed_ifaces, sizeof(ifaces[0])*n)) {
  517. !         return True;
  518.       }
  519.       
  520.       return False;
  521.   }
  522. --- 234,255 ----
  523.   
  524.       n = get_interfaces(ifaces, MAX_INTERFACES);
  525.   
  526. !     /* olsen: probed_ifaces can be NULL! */
  527. !     #ifdef AMIGA
  528. !     {
  529. !         if (n != total_probed ||
  530. !             (probed_ifaces != NULL && memcmp(ifaces, probed_ifaces, sizeof(ifaces[0])*n))) {
  531. !             return True;
  532. !         }
  533.       }
  534. +     #else
  535. +     {
  536. +         if (n != total_probed ||
  537. +             memcmp(ifaces, probed_ifaces, sizeof(ifaces[0])*n)) {
  538. +             return True;
  539. +         }
  540. +     }
  541. +     #endif
  542.       
  543.       return False;
  544.   }
  545. *** lib/interfaces.c    Fri Sep 24 18:42:05 1999
  546. --- /new/lib/interfaces.c    Fri Dec 03 09:14:02 1999
  547. ***************
  548. *** 331,336 ****
  549. --- 331,345 ----
  550.       return total;
  551.   }
  552.   
  553. + #elif defined(AMIGA)
  554. + static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces)
  555. + {
  556. +     extern int amiga_get_interfaces(struct iface_struct * ifaces,int max_interfaces);
  557. +     return(amiga_get_interfaces(ifaces,max_interfaces));
  558. + }
  559.   #else /* a dummy version */
  560.   static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces)
  561.   {
  562. *** libsmb/clientgen.c    Wed Nov 10 21:36:03 1999
  563. --- /new/libsmb/clientgen.c    Tue Nov 16 19:32:53 1999
  564. ***************
  565. *** 872,878 ****
  566.           pstrcpy(p,workgroup);
  567.           strupper(p);
  568.           p = skip_string(p,1);
  569. !         pstrcpy(p,"Unix");p = skip_string(p,1);
  570.           pstrcpy(p,"Samba");p = skip_string(p,1);
  571.           set_message(cli->outbuf,13,PTR_DIFF(p,smb_buf(cli->outbuf)),False);
  572.       }
  573. --- 872,886 ----
  574.           pstrcpy(p,workgroup);
  575.           strupper(p);
  576.           p = skip_string(p,1);
  577. !         #ifdef AMIGA
  578. !         {
  579. !           pstrcpy(p,"AmigaOS");p = skip_string(p,1);
  580. !         }
  581. !         #else
  582. !         {
  583. !           pstrcpy(p,"Unix");p = skip_string(p,1);
  584. !         }
  585. !         #endif /* AMIGA */
  586.           pstrcpy(p,"Samba");p = skip_string(p,1);
  587.           set_message(cli->outbuf,13,PTR_DIFF(p,smb_buf(cli->outbuf)),False);
  588.       }
  589. *** smbd/reply.c    Wed Nov 10 21:36:11 1999
  590. --- /new/smbd/reply.c    Tue Nov 16 19:32:54 1999
  591. ***************
  592. *** 955,961 ****
  593.       char *p;
  594.       set_message(outbuf,3,3,True);
  595.       p = smb_buf(outbuf);
  596. !     pstrcpy(p,"Unix"); p = skip_string(p,1);
  597.       pstrcpy(p,"Samba "); pstrcat(p,VERSION); p = skip_string(p,1);
  598.       pstrcpy(p,global_myworkgroup); p = skip_string(p,1);
  599.       set_message(outbuf,3,PTR_DIFF(p,smb_buf(outbuf)),False);
  600. --- 955,969 ----
  601.       char *p;
  602.       set_message(outbuf,3,3,True);
  603.       p = smb_buf(outbuf);
  604. !     #ifdef AMIGA
  605. !     {
  606. !       pstrcpy(p,"AmigaOS"); p = skip_string(p,1);
  607. !     }
  608. !     #else
  609. !     {
  610. !       pstrcpy(p,"Unix"); p = skip_string(p,1);
  611. !     }
  612. !     #endif /* AMIGA */
  613.       pstrcpy(p,"Samba "); pstrcat(p,VERSION); p = skip_string(p,1);
  614.       pstrcpy(p,global_myworkgroup); p = skip_string(p,1);
  615.       set_message(outbuf,3,PTR_DIFF(p,smb_buf(outbuf)),False);
  616. *** web/swat.c    Wed Nov 10 21:36:19 1999
  617. --- /new/web/swat.c    Tue Nov 16 19:32:55 1999
  618. ***************
  619. *** 965,972 ****
  620.       if (!dbf) dbf = stderr;
  621.   
  622.       /* we don't want stderr screwing us up */
  623. !     close(2);
  624. !     open("/dev/null", O_WRONLY);
  625.   
  626.       while ((opt = getopt(argc, argv,"s:a")) != EOF) {
  627.           switch (opt) {
  628. --- 965,976 ----
  629.       if (!dbf) dbf = stderr;
  630.   
  631.       /* we don't want stderr screwing us up */
  632. !     #ifndef AMIGA
  633. !     {
  634. !         close(2);
  635. !         open("/dev/null", O_WRONLY);
  636. !     }
  637. !     #endif /* AMIGA */
  638.   
  639.       while ((opt = getopt(argc, argv,"s:a")) != EOF) {
  640.           switch (opt) {
  641.